/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.guaraba.patrimonio.controller;

/**
 *
 * @author marcelo
 */
import br.com.guaraba.patrimonio.controller.util.JsfUtil;
import br.com.guaraba.patrimonio.facade.CategoriaFacade;
import br.com.guaraba.patrimonio.modelo.Categoria;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;
import org.apache.log4j.Logger;

/**
 *
 * @author marcelo
 */
@ManagedBean
@SessionScoped
public class CategoriaController implements Serializable {

    static Logger logger = Logger.getLogger(CategoriaController.class.getName());
    @ManagedProperty(value = "#{jsfUtil}")
    private JsfUtil jsfUtil;
    private Categoria categoria;
    @EJB
    private CategoriaFacade categoriaFacade;
    private List<Categoria> listaCategorias;

    public CategoriaController() {
        this.categoria = new Categoria();
        this.listaCategorias = new ArrayList<Categoria>();
    }

    public JsfUtil getJsfUtil() {
        return jsfUtil;
    }

    public void setJsfUtil(JsfUtil jsfUtil) {
        this.jsfUtil = jsfUtil;
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    public CategoriaFacade getCategoriaFacade() {
        return categoriaFacade;
    }

    public void setCategoriaFacade(CategoriaFacade categoriaFacade) {
        this.categoriaFacade = categoriaFacade;
    }

    public List<Categoria> getListaCategorias() {
        return listaCategorias;
    }

    public void setListaCategorias(List<Categoria> listaCategorias) {
        this.listaCategorias = listaCategorias;
    }

    public void NovaCategoria() {
        this.categoria = new Categoria();
    }

    public void BuscarTodasCategoria() {
        this.listaCategorias = categoriaFacade.findAll();
    }

    public void Salvar(){
        try {
            this.categoriaFacade.create(categoria);
            jsfUtil.addSuccess("Categoria_salva_com_sucesso");
            this.NovaCategoria();
        } catch (Exception ex) {
            //jsfUtil.addErro("Ocoreu_um_erro");
            JsfUtil.addErrorMessage("Erro: " + ex.getMessage() + "causa " + ex.getCause());
        }
    }

    public void EditarCategoria() {
        try {
            this.categoriaFacade.edit(categoria);
            jsfUtil.addSuccess("Categoria_salva_com_sucesso");
            this.NovaCategoria();
        } catch (Exception ex) {
            jsfUtil.addErro("Ocoreu_um_erro");
        }
    }

    public List<SelectItem> getSelectCategoria() {
        List<Categoria> lista = categoriaFacade.findAll();
        List<SelectItem> listItens = new ArrayList<SelectItem>();
        for (Categoria c : lista) {
            listItens.add(new SelectItem(c.getId(), c.getNome()));
        }
        return listItens;
    }

}
